package controller

import (
	"fmt"
	"go-data-spider/server/model"
	"net/http"
	"strings"

	"github.com/labstack/echo/v4"
)

// ListIndexCodes 控制器函数
func ListIndexCodes(c echo.Context) error {
	indexCodeList, err := model.ListIndexCodes()
	if err != nil {
		return fmt.Errorf("ListIndexCodes error: %v", err)
	}

	// 生成secid字段
	for i := range indexCodeList {
		indexCodeList[i].SecId = generateSecID(indexCodeList[i].Code)
	}

	return c.JSON(http.StatusOK, indexCodeList)
}

// 修复 secid 生成逻辑，区分沪市和深市指数
// 根据您提供的预期结果，secid的生成规则如下：

// 以000开头的代码，前缀为1.（沪市指数）
// 以399开头的代码，前缀为0.（深市指数）
// 生成secid的辅助函数 - 根据指数代码前缀区分沪市和深市
func generateSecID(code string) string {
	// 确保code不为空
	if code == "" {
		return ""
	}

	// 根据代码前缀判断市场
	if strings.HasPrefix(code, "000") || strings.HasPrefix(code, "000688") {
		return "1." + code // 沪市指数
	} else if strings.HasPrefix(code, "399") {
		return "0." + code // 深市指数
	}

	// 默认使用1.前缀
	return "1." + code
}
